home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / CIncludes / HyperXCmd.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-09-11  |  12.2 KB  |  319 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        HyperXCmd.h
  3.  
  4.      Contains:    Interfaces for HyperCard XCMD's
  5.  
  6.      Version:    Technology:    HyperCard 2.3
  7.                  Package:    Universal Interfaces 2.1.1 in “MPW Latest” on ETO #19
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __HYPERXCMD__
  21. #define __HYPERXCMD__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __EVENTS__
  30. #include <Events.h>
  31. #endif
  32. /*    #include <Quickdraw.h>                                        */
  33. /*        #include <MixedMode.h>                                    */
  34. /*        #include <QuickdrawText.h>                                */
  35. /*    #include <OSUtils.h>                                        */
  36. /*        #include <Memory.h>                                        */
  37. /*        #include <Patches.h>                                    */
  38.  
  39. #ifndef __TEXTEDIT__
  40. #include <TextEdit.h>
  41. #endif
  42.  
  43. #ifndef __MENUS__
  44. #include <Menus.h>
  45. #endif
  46.  
  47. #ifndef __STANDARDFILE__
  48. #include <StandardFile.h>
  49. #endif
  50. /*    #include <Dialogs.h>                                        */
  51. /*        #include <Errors.h>                                        */
  52. /*        #include <Controls.h>                                    */
  53. /*        #include <Windows.h>                                    */
  54. /*    #include <Files.h>                                            */
  55. /*        #include <Finder.h>                                        */
  56.  
  57. #ifdef __cplusplus
  58. extern "C" {
  59. #endif
  60.  
  61. #if PRAGMA_ALIGN_SUPPORTED
  62. #pragma options align=mac68k
  63. #endif
  64.  
  65. #if PRAGMA_IMPORT_SUPPORTED
  66. #pragma import on
  67. #endif
  68.  
  69. /* result codes */
  70.  
  71. enum {
  72.     xresSucc                    = 0,
  73.     xresFail                    = 1,
  74.     xresNotImp                    = 2
  75. };
  76.  
  77. /* XCMDBlock constants for event.what... */
  78. enum {
  79.     xOpenEvt                    = 1000,                            /* the first event after you are created */
  80.     xCloseEvt                    = 1001,                            /* your window is being forced close (Quit?) */
  81.     xGiveUpEditEvt                = 1002,                            /* you are losing Edit... */
  82.     xGiveUpSoundEvt                = 1003,                            /* you are losing the sound channel... */
  83.     xHidePalettesEvt            = 1004,                            /* someone called HideHCPalettes */
  84.     xShowPalettesEvt            = 1005,                            /* someone called ShowHCPalettes */
  85.     xEditUndo                    = 1100,                            /* Edit——Undo */
  86.     xEditCut                    = 1102,                            /* Edit——Cut */
  87.     xEditCopy                    = 1103,                            /* Edit——Copy */
  88.     xEditPaste                    = 1104,                            /* Edit——Paste */
  89.     xEditClear                    = 1105,                            /* Edit——Clear */
  90.     xSendEvt                    = 1200,                            /* script has sent you a message (text) */
  91.     xSetPropEvt                    = 1201,                            /* set a window property */
  92.     xGetPropEvt                    = 1202,                            /* get a window property */
  93.     xCursorWithin                = 1300,                            /* cursor is within the window */
  94.     xMenuEvt                    = 1400,                            /* user has selected an item in your menu */
  95.     xMBarClickedEvt                = 1401,                            /* a menu is about to be shown--update if needed */
  96.     xShowWatchInfoEvt            = 1501,                            /* for variable and message watchers */
  97.     xScriptErrorEvt                = 1502,                            /* place the insertion point */
  98.     xDebugErrorEvt                = 1503,                            /* user clicked "Debug" at a complaint */
  99.     xDebugStepEvt                = 1504,                            /* hilite the line */
  100.     xDebugTraceEvt                = 1505,                            /* same as step but tracing */
  101.     xDebugFinishedEvt            = 1506                            /* script ended */
  102. };
  103.  
  104. enum {
  105.     paletteProc                    = 2048,                            /* Windoid with grow box */
  106.     palNoGrowProc                = 2052,                            /* standard Windoid defproc */
  107.     palZoomProc                    = 2056,                            /* Windoid with zoom and grow */
  108.     palZoomNoGrow                = 2060,                            /* Windoid with zoom and no grow */
  109.     hasZoom                        = 8,
  110.     hasTallTBar                    = 2,
  111.     toggleHilite                = 1
  112. };
  113.  
  114. /* paramCount is set to these constants when first calling special XThings */
  115. enum {
  116.     xMessageWatcherID            = -2,
  117.     xVariableWatcherID            = -3,
  118.     xScriptEditorID                = -4,
  119.     xDebuggerID                    = -5
  120. };
  121.  
  122. /* XTalkObjectPtr->objectKind values */
  123. enum {
  124.     stackObj                    = 1,
  125.     bkgndObj                    = 2,
  126.     cardObj                        = 3,
  127.     fieldObj                    = 4,
  128.     buttonObj                    = 5
  129. };
  130.  
  131. /* selectors for ShowHCAlert's dialogs (shown as buttonID:buttonText) */
  132. enum {
  133.     errorDlgID                    = 1,                            /* 1:OK (default) */
  134.     confirmDlgID                = 2,                            /* 1:OK (default) and 2:Cancel */
  135.     confirmDelDlgID                = 3,                            /* 1:Cancel (default) and 2:Delete */
  136.     yesNoCancelDlgID            = 4                                /* 1:Yes (default), 2:Cancel, and 3:No */
  137. };
  138.  
  139. /* type definitions */
  140. struct XCmdBlock {
  141.     short                            paramCount;                    /* If = -1 then new use for XWindoids */
  142.     Handle                            params[16];
  143.     Handle                            returnValue;
  144.     Boolean                            passFlag;
  145.     SignedByte                        filler1;
  146.     UniversalProcPtr                entryPoint;                    /* to call back to HyperCard */
  147.     short                            request;
  148.     short                            result;
  149.     long                            inArgs[8];
  150.     long                            outArgs[4];
  151. };
  152. typedef struct XCmdBlock XCmdBlock;
  153.  
  154. typedef XCmdBlock *XCmdPtr;
  155.  
  156. struct XWEventInfo {
  157.     EventRecord                        event;
  158.     WindowPtr                        eventWindow;
  159.     long                            eventParams[9];
  160.     Handle                            eventResult;
  161. };
  162. typedef struct XWEventInfo XWEventInfo;
  163.  
  164. typedef XWEventInfo *XWEventInfoPtr;
  165.  
  166. struct XTalkObject {
  167.     short                            objectKind;                    /* stack, bkgnd, card, field, or button */
  168.     long                            stackNum;                    /* reference number of the source stack */
  169.     long                            bkgndID;
  170.     long                            cardID;
  171.     long                            buttonID;
  172.     long                            fieldID;
  173. };
  174. typedef struct XTalkObject XTalkObject;
  175.  
  176. typedef XTalkObject *XTalkObjectPtr;
  177.  
  178. /* maximum number of checkpoints in a script */
  179.  
  180. enum {
  181.     maxCachedChecks                = 16
  182. };
  183.  
  184. struct CheckPts {
  185.     short                            checks[16];
  186. };
  187. typedef struct CheckPts CheckPts;
  188.  
  189. typedef CheckPts *CheckPtPtr;
  190.  
  191. typedef CheckPtPtr *CheckPtHandle;
  192.  
  193. /*
  194.         HyperTalk Utilities  
  195. */
  196. extern pascal Handle EvalExpr(XCmdPtr paramPtr, ConstStr255Param expr);
  197. extern pascal void SendCardMessage(XCmdPtr paramPtr, ConstStr255Param msg);
  198. extern pascal void SendHCMessage(XCmdPtr paramPtr, ConstStr255Param msg);
  199. extern pascal void RunHandler(XCmdPtr paramPtr, Handle handler);
  200. /*
  201.         Memory Utilities  
  202. */
  203. extern pascal Handle GetGlobal(XCmdPtr paramPtr, ConstStr255Param globName);
  204. extern pascal void SetGlobal(XCmdPtr paramPtr, ConstStr255Param globName, Handle globValue);
  205. extern pascal void ZeroBytes(XCmdPtr paramPtr, void *dstPtr, long longCount);
  206. /*
  207.         String Utilities  
  208. */
  209. extern pascal void ScanToReturn(XCmdPtr paramPtr, Ptr *scanPtr);
  210. extern pascal void ScanToZero(XCmdPtr paramPtr, Ptr *scanPtr);
  211. extern pascal Boolean StringEqual(XCmdPtr paramPtr, ConstStr255Param str1, ConstStr255Param str2);
  212. extern pascal long StringLength(XCmdPtr paramPtr, void *strPtr);
  213. extern pascal void *StringMatch(XCmdPtr paramPtr, ConstStr255Param pattern, void *target);
  214. extern pascal void ZeroTermHandle(XCmdPtr paramPtr, Handle hndl);
  215. /*
  216.         String Conversions  
  217. */
  218. extern pascal void BoolToStr(XCmdPtr paramPtr, Boolean bool, Str255 str);
  219. extern pascal void Double_tToStr(XCmdPtr paramPtr, double_t num, Str255 str);
  220. extern pascal void LongToStr(XCmdPtr paramPtr, long posNum, Str255 str);
  221. extern pascal void NumToHex(XCmdPtr paramPtr, long num, short nDigits, Str255 str);
  222. extern pascal void NumToStr(XCmdPtr paramPtr, long num, Str255 str);
  223. extern pascal Handle PasToZero(XCmdPtr paramPtr, ConstStr255Param str);
  224. extern pascal void PointToStr(XCmdPtr paramPtr, Point pt, Str255 str);
  225. extern pascal void RectToStr(XCmdPtr paramPtr, const Rect *rct, Str255 str);
  226. extern pascal void ReturnToPas(XCmdPtr paramPtr, void *zeroStr, Str255 pasStr);
  227. extern pascal Boolean StrToBool(XCmdPtr paramPtr, ConstStr255Param str);
  228. extern pascal double_t StrToDouble_t(XCmdPtr paramPtr, ConstStr255Param str);
  229. extern pascal long StrToLong(XCmdPtr paramPtr, ConstStr255Param str);
  230. extern pascal long StrToNum(XCmdPtr paramPtr, ConstStr255Param str);
  231. extern pascal void StrToPoint(XCmdPtr paramPtr, ConstStr255Param str, Point *pt);
  232. extern pascal void StrToRect(XCmdPtr paramPtr, ConstStr255Param str, Rect *rct);
  233. extern pascal void ZeroToPas(XCmdPtr paramPtr, void *zeroStr, Str255 pasStr);
  234. /*
  235.         Field Utilities  
  236. */
  237. extern pascal Handle GetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID);
  238. extern pascal Handle GetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, ConstStr255Param fieldName);
  239. extern pascal Handle GetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum);
  240. extern pascal void SetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, Handle fieldVal);
  241. extern pascal void SetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, ConstStr255Param fieldName, Handle fieldVal);
  242. extern pascal void SetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum, Handle fieldVal);
  243. extern pascal TEHandle GetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, short fieldNum, ConstStr255Param fieldName);
  244. extern pascal void SetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, short fieldNum, ConstStr255Param fieldName, TEHandle fieldTE);
  245. /*
  246.         Miscellaneous Utilities  
  247. */
  248. extern pascal void BeginXSound(XCmdPtr paramPtr, WindowPtr window);
  249. extern pascal void EndXSound(XCmdPtr paramPtr);
  250. extern pascal Boolean GetFilePath(XCmdPtr paramPtr, ConstStr255Param fileName, short numTypes, ConstSFTypeListPtr typeList, Boolean askUser, OSType *fileType, Str255 fullName);
  251. extern pascal void GetXResInfo(XCmdPtr paramPtr, short *resFile, short *resID, ResType *rType, Str255 name);
  252. extern pascal void Notify(XCmdPtr paramPtr);
  253. extern pascal void SendHCEvent(XCmdPtr paramPtr, const EventRecord *event);
  254. extern pascal void SendWindowMessage(XCmdPtr paramPtr, WindowPtr windPtr, ConstStr255Param windowName, ConstStr255Param msg);
  255. extern pascal WindowPtr FrontDocWindow(XCmdPtr paramPtr);
  256. extern pascal long StackNameToNum(XCmdPtr paramPtr, ConstStr255Param stackName);
  257. extern pascal short ShowHCAlert(XCmdPtr paramPtr, short dlgID, ConstStr255Param promptStr);
  258. extern pascal Boolean AbortInQueue(XCmdPtr paramPtr);
  259. extern pascal void FlushStackFile(XCmdPtr paramPtr);
  260. /*
  261.         Creating and Disposing XWindoids  
  262. */
  263. extern pascal WindowPtr NewXWindow(XCmdPtr paramPtr, const Rect *boundsRect, ConstStr255Param title, Boolean visible, short procID, Boolean color, Boolean floating);
  264. extern pascal WindowPtr GetNewXWindow(XCmdPtr paramPtr, ResType templateType, short templateID, Boolean color, Boolean floating);
  265. extern pascal void CloseXWindow(XCmdPtr paramPtr, WindowPtr window);
  266. /*
  267.         XWindoid Utilities  
  268. */
  269. extern pascal void HideHCPalettes(XCmdPtr paramPtr);
  270. extern pascal void ShowHCPalettes(XCmdPtr paramPtr);
  271. extern pascal void RegisterXWMenu(XCmdPtr paramPtr, WindowPtr window, MenuHandle menu, Boolean registering);
  272. extern pascal void SetXWIdleTime(XCmdPtr paramPtr, WindowPtr window, long interval);
  273. extern pascal void XWHasInterruptCode(XCmdPtr paramPtr, WindowPtr window, Boolean haveCode);
  274. extern pascal void XWAlwaysMoveHigh(XCmdPtr paramPtr, WindowPtr window, Boolean moveHigh);
  275. extern pascal void XWAllowReEntrancy(XCmdPtr paramPtr, WindowPtr window, Boolean allowSysEvts, Boolean allowHCEvts);
  276. /*
  277.         Text Editing Utilities  
  278. */
  279. extern pascal void BeginXWEdit(XCmdPtr paramPtr, WindowPtr window);
  280. extern pascal void EndXWEdit(XCmdPtr paramPtr, WindowPtr window);
  281. extern pascal WordBreakUPP HCWordBreakProc(XCmdPtr paramPtr);
  282. extern pascal void PrintTEHandle(XCmdPtr paramPtr, TEHandle hTE, StringPtr header);
  283. /*
  284.         Script Editor support  
  285. */
  286. extern pascal CheckPtHandle GetCheckPoints(XCmdPtr paramPtr);
  287. extern pascal void SetCheckPoints(XCmdPtr paramPtr, CheckPtHandle checkLines);
  288. extern pascal void FormatScript(XCmdPtr paramPtr, Handle scriptHndl, long *insertionPoint, Boolean quickFormat);
  289. extern pascal void SaveXWScript(XCmdPtr paramPtr, Handle scriptHndl);
  290. extern pascal void GetObjectName(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Str255 objName);
  291. extern pascal void GetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Handle *scriptHndl);
  292. extern pascal void SetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Handle scriptHndl);
  293. /*
  294.         Debugging Tools support  
  295. */
  296. extern pascal void AbortScript(XCmdPtr paramPtr);
  297. extern pascal void GoScript(XCmdPtr paramPtr);
  298. extern pascal void StepScript(XCmdPtr paramPtr, Boolean stepInto);
  299. extern pascal void CountHandlers(XCmdPtr paramPtr, short *handlerCount);
  300. extern pascal void GetHandlerInfo(XCmdPtr paramPtr, short handlerNum, Str255 handlerName, Str255 objectName, short *varCount);
  301. extern pascal void GetVarInfo(XCmdPtr paramPtr, short handlerNum, short varNum, Str255 varName, Boolean *isGlobal, Str255 varValue, Handle varHndl);
  302. extern pascal void SetVarValue(XCmdPtr paramPtr, short handlerNum, short varNum, Handle varHndl);
  303. extern pascal Handle GetStackCrawl(XCmdPtr paramPtr);
  304. extern pascal void TraceScript(XCmdPtr paramPtr, Boolean traceInto);
  305.  
  306. #if PRAGMA_IMPORT_SUPPORTED
  307. #pragma import off
  308. #endif
  309.  
  310. #if PRAGMA_ALIGN_SUPPORTED
  311. #pragma options align=reset
  312. #endif
  313.  
  314. #ifdef __cplusplus
  315. }
  316. #endif
  317.  
  318. #endif /* __HYPERXCMD__ */
  319.